
package com.example.cia.mysql.dao;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

public interface IMysqlDao<T>{

	/**
	 * 所有dao类的超类
	 */
	
	/**
	 * 查询一列信息
	 * @return 一列信息集合
	 * @throws IOException 
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 */
	public List<T> query() throws ClassNotFoundException, SQLException, IOException;
	
	/**
	 * 查询单个信息
	 * @return 单个信息类型
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 * @throws IOException
	 */
    public T queryForOneObject() throws ClassNotFoundException, SQLException, IOException;
	
	/**
	 * 查询一列ID
	 * @return 一列ID集合
	 * @throws IOException 
	 * @throws SQLException 
	 * @throws ClassNotFoundException 
	 */
	public List<Integer> queryId() throws ClassNotFoundException, SQLException, IOException;
	
	/**
	 * 向数据库中添加信息
	 * @return true 添加成功，false 添加失败
	 */
	public boolean add();
	
	/**
	 * 向数据库中删除信息
	 * @return true 添加成功，false 添加失败
	 */
	public boolean delete();
	
	/**
	 * 获取表名
	 * @return tableName
	 */
	public String getTableName();
	
	/**
	 * 获取标准化的表名
	 * @return qulifiedTableName
	 */
	public String getQulifiedTableName();
	
	/**
	 * 获取主键
	 * @return primaryKey
	 */
	public String getPrimaryKey();
	
	/**
	 * 获取查询字段
	 * @param which 根据情况定义返回字段
	 * @return queryFieldString 
	 */
	public String getQueryFieldString(int which);
	
}
